/**
 * 全局Loading的打开与关闭
 */
import { ElLoading } from 'element-plus'

// loading所需参数
const loadOption = {
  lock: true,
  text: '正在请求......',
  spinner: 'el-icon-loading',
  background: 'rgba(0, 0, 0, 0.7)',
}

// 记录同一时间loading打开次数，关闭的时候该值减1，减到0再关闭loading，
// 避免多个请求发生时，时间短的请求把时间长的请求loading关闭掉
let times = 0

let loading = null
const show = () => {
  times++
  loading = ElLoading.service(loadOption)
}

const hide = () => {
  times--
  if (loading) {
    if (times <= 0) {
      loading.close()
      times = 0
    }
  }
}

// 次数加1, 有时候发请求并不希望打开弹框，但是每次请求完成都会 times-- 为了防止减到负数，添加这个方法
const timePlus = () => {
  times++
}

const GlobalLoad = {
  show,
  hide,
  timePlus,
}

export default GlobalLoad
